Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

start [2010/12/07 15:39]
admin
start [2011/03/15 11:11] (atual)
admin
Linha 37: Linha 37:
=== Lista 1) Exercicios de revisão de programação - 19/08/2010 === === Lista 1) Exercicios de revisão de programação - 19/08/2010 ===
-  - Calcular as somas <latex>S(N)=\sum_{i=1}^{N-1} \frac{1}{i^2}</latex> e <latex>SI(N)=\sum_{i=1}^{N-1} \frac{1}{(N-i)^2}</latex> com i sendo uma variável ponto flutuante de precisão simples. Plote as diferencas <latex> \left|S(N)-S_{\infty}\right|/S_{\infty}</latex> vs N e  <latex> \left|SI(N)-S_{\infty}\right|/S_{\infty}</latex> vs N para  <latex>N=100,200,..,10^6</latex> onde <latex>S_{\infty}=\frac{\pi ^2}{6}</latex>+  - Somas não são comutativas no computador! Calcule as somas <latex>S(N)=\sum_{i=1}^{N-1} \frac{1}{i^2}</latex> e <latex>SI(N)=\sum_{i=1}^{N-1} \frac{1}{(N-i)^2}</latex> com i sendo uma variável ponto flutuante de precisão simples e coloque **em um mesmo gráfico** as diferencas <latex> \left|S(N)-S_{\infty}\right|/S_{\infty}</latex> vs N e  <latex> \left|SI(N)-S_{\infty}\right|/S_{\infty}</latex> vs N para  <latex>N=100,200,..,10^6</latex> onde <latex>S_{\infty}=\frac{\pi ^2}{6}</latex>.
  - Escrever um programa que recebe como entrada um número inteiro em representação decimal e retorna sua expansão binária. Para tal, crie uma função que verifica se o i-ésimo bit de uma palavra (variável do programa) vale zero ou um.   - Escrever um programa que recebe como entrada um número inteiro em representação decimal e retorna sua expansão binária. Para tal, crie uma função que verifica se o i-ésimo bit de uma palavra (variável do programa) vale zero ou um.
  - Considere um número de ponto flutuante de N bits com E bits reservados para o expoente e M=N-E-1 para a mantissa. Represente TODOS os números obtidos nesta representação em um grafico de barras no gnuplot. Para cada número x, armazene um par (x,1) e plote o arquivo de dados com ''with impulses''. Reveja [[http://www.psc.edu/general/software/packages/ieee/ieee.php|aqui]] a definição de números de ponto flutuante. \\ {{:floating_point.jpg?300|}}   - Considere um número de ponto flutuante de N bits com E bits reservados para o expoente e M=N-E-1 para a mantissa. Represente TODOS os números obtidos nesta representação em um grafico de barras no gnuplot. Para cada número x, armazene um par (x,1) e plote o arquivo de dados com ''with impulses''. Reveja [[http://www.psc.edu/general/software/packages/ieee/ieee.php|aqui]] a definição de números de ponto flutuante. \\ {{:floating_point.jpg?300|}}
Linha 49: Linha 49:
Sendo a derivada de uma função <latex>f(x)</latex> definida por <latex> \frac{df}{dx}=\lim_{h \to 0}\frac{f(x+h)-f(x)}{h}</latex> e Sendo a derivada de uma função <latex>f(x)</latex> definida por <latex> \frac{df}{dx}=\lim_{h \to 0}\frac{f(x+h)-f(x)}{h}</latex> e
-<latex>f(x+h)=f(x)+hf^{\prime}(x)+\frac{h^2}{2}f^{\prime \prime}(x)+\ldots</latex>, o método de Euler (com difereças posteriores) corresponde ao truncamento desta expansão em ordem h. Obtemos assim que <latex> \frac{df}{dx}=\frac{f(x+h)-f(x)}{h}</latex>.+<latex>f(x+h)=f(x)+hf^{\prime}(x)+\frac{h^2}{2}f^{\prime \prime}(x)+\ldots</latex>, o método de Euler (com difereças posteriores) corresponde ao truncamento desta expansão em ordem h. Obtemos assim que a derivada no ponto x é aproximada por <latex>\frac{df}{dx}=\frac{f(x+h)-f(x)}{h}</latex>.
  - Mostre que o método de Euler com diferenças centradas é exato em <latex>{\cal O}(h^2)</latex>, onde h é o passo de discretização da derivada. Nesse método escrevemos <latex> \frac{df}{dx}=\frac{f(x+h)-f(x-h)}{2h}</latex>   - Mostre que o método de Euler com diferenças centradas é exato em <latex>{\cal O}(h^2)</latex>, onde h é o passo de discretização da derivada. Nesse método escrevemos <latex> \frac{df}{dx}=\frac{f(x+h)-f(x-h)}{2h}</latex>
-  - Calcule a derivada numérica de <latex>f(x)=\frac{sin(x^2)e^{x/3}}{\sqrt{(x^2+4)}}</latex> no ponto x=3 usando o método de Euler simples com passo de discretização h entre <latex>10^{-8}</latex> e <latex>1</latex> e faça um gráfico mostrando a diferença relativa entre a derivada numérica e o valor exato da derivada para ponto flutuante com precisão simples e dupla. Entre quais valores de h a aproximação é aceitável? +  - Calcule a derivada numérica de <latex>f(x)=\frac{sin(x^2)e^{x/3}}{\sqrt{(x^2+4)}}</latex> no ponto x=3 usando o método de Euler simples com passo de discretização entre <latex>h=10^{-8}</latex> e <latex>h=1</latex> e faça um gráfico mostrando a diferença relativa entre a derivada numérica e o valor exato da derivada para ponto flutuante com precisão simples e dupla. Entre quais valores de h a aproximação é aceitável? (Solução [[http://davinci.if.ufrgs.br/wiki/index.php/Derivada_Num%C3%A9rica|aqui]])
  - Mostre que o método de Euler é instável para qualquer passo h na solução do problema de crescimento exponencial <latex> \frac{dy}{dx}=\lambda x</latex>   - Mostre que o método de Euler é instável para qualquer passo h na solução do problema de crescimento exponencial <latex> \frac{dy}{dx}=\lambda x</latex>
-  - Integre a equação diferencial <latex>\frac{dy}{dt}-y=-\frac{1}{2}e^{t/2}\sin(5t)+5e^{t/2}\cos(5t)</latex> com <latex>y(0)=1</latex> com o método de Euler simples para diferentes valores de passo h=0.1, h = 0.05, h = 0.01, h = 0.005 e h  = 0.001  e compare cada solução em t=1,2,3,4 e 5 com a solução exata <latex>y(t)=e^{t/2}sin(5t)</latex> . Faça um gráfico com a solução para h=0.05 entre t=0 e t=5 e a solução exata.+  - Integre a equação diferencial <latex>\frac{dy}{dt}-y=-\frac{1}{2}e^{t/2}\sin(5t)+5e^{t/2}\cos(5t)</latex> com <latex>y(0)=1</latex> com o método de Euler simples para diferentes valores de passo h=0.1, h = 0.05, h = 0.01, h = 0.005 e h  = 0.001  e compare cada solução em t=1,2,3,4 e 5 com a solução exata <latex>y(t)=e^t+e^{t/2}sin(5t)</latex>. Voce pode encontrar essa solução exata digitando a equação diferencial no site do [[http://www.wolframalpha.com|WolframAlpha]] 
 +  -  Faça um gráfico com a solução para h=0.05 entre t=0 e t=5 e a solução exata.
  - Resolva o problema acima com o método de Euler com diferenças centradas e os mesmos valores de h. Para obter o primeiro passo use o método de Euler simples com passo de discretização dez vezes menor que o usado no resto do intervalo.   - Resolva o problema acima com o método de Euler com diferenças centradas e os mesmos valores de h. Para obter o primeiro passo use o método de Euler simples com passo de discretização dez vezes menor que o usado no resto do intervalo.
  * Referências     * Referências  
 
start.1291743595.txt.gz · Última modificação: 2010/12/07 15:39 por admin     Voltar ao topo
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki Design by Chirripó